#include <bits/stdc++.h>

using namespace std;

const int N=1e5+10;
vector<int>a[N];
int n,g[N],maxn;

bool vis[N];
void dfs(int x,int f){
     g[x]=a[x].size();
     int maxn=0;
     for(auto j:a[x]){
     	if(j==f)continue;
     	//cout <<j<<endl;
	 	dfs(j,x);
	 	maxn=max(maxn,g[j]);
	 //	cout<<maxn<<endl;
	 }
	 g[x]+=maxn;
}
int main(){
	cin >> n;
	for(int i=2;i<=n;i++){
		int c;
		cin>>c;
		a[i].push_back(c);
		a[c].push_back(i);
	}
	dfs(1,-1);
	cout<<g[1];
	return 0;
}
